package com.chatplus.application.domain.request;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
/**
 * SD图片绘图任务请求
 */
@JsonIgnoreProperties(ignoreUnknown = true)
@Data
public class SdImageJobRequest implements Serializable {

    /**
     * width : 1024
     * height : 1024
     * sampler : Euler a
     * seed : -1
     * steps : 30
     * cfg_scale : 7
     * face_fix : true
     * hd_fix : true
     * hd_redraw_rate : 0.5
     * hd_scale : 2
     * hd_scale_alg : SwinIR_4x
     * hd_steps : 15
     * prompt : 画一个帅哥
     * negative_prompt : nsfw, paintings,low quality,easynegative,ng_deepnegative ,lowres,bad anatomy,bad hands,bad feet
     * session_id : hxzacwfqx4ig4vbnqokw73thfoorcldsach3gv39ep
     */
    @JsonProperty("width")
    @Schema(description ="图片尺寸宽度")
    private int width;

    @JsonProperty("height")
    @Schema(description ="图片尺寸高度")
    private int height;

    @JsonProperty("sampler")
    @Schema(description ="采样方法")
    private String sampler;

    @JsonProperty("seed")
    @Schema(description ="随机因子")
    private int seed;

    @JsonProperty("steps")
    @Schema(description ="迭代步骤")
    private int steps;

    @JsonProperty("cfg_scale")
    @Schema(description ="引导系数")
    private int cfgScale;

    @JsonProperty("face_fix")
    @Schema(description ="面部修复")
    private boolean faceFix;

    @JsonProperty("hd_fix")
    @Schema(description ="高清修复")
    private boolean hdFix;

    @JsonProperty("hd_redraw_rate")
    @Schema(description ="重绘幅度")
    private double hdRedrawRate;

    @JsonProperty("hd_scale")
    @Schema(description ="放大倍数")
    private int hdScale;

    @JsonProperty("hd_scale_alg")
    @Schema(description ="放大算法")
    private String hdScaleAlg;

    @JsonProperty("hd_steps")
    @Schema(description ="迭代步数")
    private int hdSteps;

    @JsonProperty("prompt")
    @Schema(description ="提示词")
    private String prompt;

    @JsonProperty("negative_prompt")
    @Schema(description ="反向提示词")
    private String negativePrompt;

    @JsonProperty("session_id")
    @Schema(description ="当前任务会话ID")
    private String sessionId;

    private Long sdJobId;

    private Long userId;

}
